﻿Ext.namespace('EHSubmit.MessageBox.WriteMsg.Contact');


    //---------------设置列字段-------------------------------
    EHSubmit.MessageBox.WriteMsg.Contact.columns = new Ext.grid.ColumnModel([
        { header: '用户ID', id: 'id', dataIndex: 'ID', hidden: true, hideable: false },
        { header: '用户角色', id: 'roleId', dataIndex: 'RoleId', hidden: true, hideable: false },
        { header: '用户名', id: 'name', dataIndex: 'Name'},              //已验证宽无法按比例变化，列宽如何动态，根据最长的内容，再判断长度？？
        { header: '学院',id:'institute',dataIndex:'Institute'},               //应该看看笔记本小屏幕下的效果
        { header: '专业', id: 'department', dataIndex: 'Department' },
        { header: '班级', id: 'class', dataIndex: 'Class' }
    ]);

    EHSubmit.MessageBox.WriteMsg.Contact.store = new Ext.data.Store({
        //需要传递操作参数
        baseParams: {        
            Op: 'list_contact', 
            searchCondit: '',
            conditField: '' 
        },
        proxy: new Ext.data.HttpProxy({ url: EHSubmit.ajaxRoot + 'MessageHandler.ashx' }),  //后台具体处理

        reader: new Ext.data.JsonReader({
            isSuccess: 'success',               //可作判断是否成功之用，实际中暂时未用到
            totalProperty: 'totalProperty',    //总记录个数
            root: 'root'
            }, [
            { name: 'ID' },
            { name: 'RoleId' },
            { name: 'Name' },
            { name: 'Institute' },
            { name: 'Department' },
            { name: 'Class'}
        ])
    });

    //-----------------展现搜到的用户-------------------------------
    EHSubmit.MessageBox.WriteMsg.Contact.grid = {
        id: 'searchGrid',
        xtype: 'grid',
        width: 400,
        height: 318,
        title: '用户搜索',
        //autoHeight: true, 
        loadMask: true,
        store: EHSubmit.MessageBox.WriteMsg.Contact.store,
        cm: EHSubmit.MessageBox.WriteMsg.Contact.columns,
        viewConfig: {
            forceFit: true
        },

        tbar: [
            '搜索条件',
            {
                id: 'searchCondit',
                xtype: 'combo',
                width: 50,
                editable: false,
                value: 'UName',   //默认值
                //emptyText: '请选择搜索条件',
                mode: 'local',
                triggerAction: 'all',
                valueField: 'value',
                displayField: 'text',

                /*  
                * 关键点(网上资料)
                * 1. x-menu使combo在选择的时候不会隐藏掉menu,看Ext.menu.MenuMgr.onMouseDown源码即知  
                * 2. x-menu里面的"z-index: 15000;",因为menu里面的layer的z-index是15000,则这里大于15000(需要限制覆盖原来的文档元素element.style)即可..   
                * 如果实际用x-menu，其他有应用x-menu的会受到干扰，设置还需考虑适当的值
                */
                listClass: 'x-menu',

                store: new Ext.data.SimpleStore({
                    fields: ['value', 'text'],
                    data: [
                    //['no', '编号'],     //可能有老师或者学生,但要考虑隐私
                        ['UName', '姓名'],
                        ['Institute', '学院'],
                        ['Department', '专业'],
                        ['Class', '班级']
                    ]
                })
            }, '-', {
                id: 'conditField',
                xtype: 'textfield',
                allowBlank: false,
                blankText: '此处不能为空',
                emptyText: '请填写',

                //------搜索按钮可用与否的处理以及bbar刷新按钮能见性问题-------
                listeners: {
                    valid: function(field) {
                        var ownerGrid = Ext.getCmp('searchGrid');
                        ownerGrid.topSearchButton.enable();
                    },
                    invalid: function(field) {
                        var ownerGrid = Ext.getCmp('searchGrid');
                        ownerGrid.topSearchButton.disable();
                    }
                }
            }, '-', {
                text: '开始搜索',
                tooltip: '搜索指定的项',
                iconCls: 'search',

                // Place a reference in the GridPanel  可能相当于一个标记
                ref: '../topSearchButton',
                disabled: true,
                listeners: {
                    click: function(button, e) {
                        var conditField = Ext.getCmp('conditField').getValue().trim();
                        //-----如果查找的具体条件为空，则不处理-------------
                        if (conditField) {
                            EHSubmit.MessageBox.WriteMsg.Contact.store.setBaseParam('searchCondit', Ext.getCmp('searchCondit').value);
                            EHSubmit.MessageBox.WriteMsg.Contact.store.setBaseParam('conditField', conditField);

                            EHSubmit.MessageBox.WriteMsg.Contact.store.load({ params: { start: 0, limit: 10} });

                            //-----这里将原来隐藏的刷新按钮恢复，填写页数处恢复可用----------
                            var bbar = Ext.getCmp('searchGrid').getBottomToolbar();
                            bbar.inputItem.enable();
                            bbar.refresh.show();
                        }
                    }
                }
}],

        //--------bottombar个人理解,资料说工具栏并不意味着作为一个页脚使用---------------
        bbar: {
            xtype: 'paging',
            pageSize: 10,                 //只是起计算页数的作用，不影响表面,内部影响start 和 limit
            store: EHSubmit.MessageBox.WriteMsg.Contact.store,
            displayInfo: true,
            displayMsg: '显示第 {0} 条到 {1} 条记录,共 {2} 条',
            emptyMsg: "没有记录"
        },

        listeners: {
            render: function() {
                //---初始化时刷新不可见---------
                var bbar = Ext.getCmp('searchGrid').getBottomToolbar();
                bbar.refresh.hide();
            },
            //------根据选定的行，获取用户信息并显示------------
            rowclick: function(thisGrid, rowIndex, e) {
                var store = thisGrid.getStore();
                var contact = store.getAt(rowIndex);
                EHSubmit.MessageBox.WriteMsg.showContact(contact.data);
                //-------更新信息的收件人----------
                var isInbox = EHSubmit.MessageBox.isInbox;
                if (isInbox) {
                    EHSubmit.MessageBox.msgData.SenderID = contact.get('ID');
                    EHSubmit.MessageBox.msgData.SenderName = contact.get('Name');
                }
                else {
                    //---当来自发件箱或直接来自grid上的写消息
                    EHSubmit.MessageBox.msgData.ReceiverID = contact.get('ID');
                    EHSubmit.MessageBox.msgData.ReceiverName = contact.get('Name');
                }
                
                Ext.getCmp('selectMenu').hide();

                store.removeAll();
                //-----对于bbar其实数据还在，实际上并没有消除！！！！！！-----
                var bbar = thisGrid.getBottomToolbar();
                //----一下更新的只是表像，在填写页数上写下后几页并查找数据依然会发现原来的数据--------
                bbar.updateInfo();
                bbar.afterTextItem.setText(String.format(bbar.afterPageText, 1));
                bbar.inputItem.setValue('1');
                bbar.inputItem.disable();   //基于上述原因将其设置为不可用
                bbar.first.setDisabled(true);
                bbar.prev.setDisabled(true);
                bbar.next.setDisabled(true);
                bbar.last.setDisabled(true);
                bbar.refresh.hide();
            }
        }
    };

    //-------------包含搜索功能的grid，展现搜到的用户列表----------------
EHSubmit.MessageBox.WriteMsg.Contact.selectMenu = {
    id: 'selectMenu',
    //xtype:'menu',
    height: 325,

    //一个公共的基类，用来使原本无菜单的组件能够被菜单选项封装起来并被添加到菜单中去。 它提供了菜单组件所必须的基本的渲染、活动管理和启用/禁用逻辑功能。
    //items: [new Ext.menu.Adapter(grid)]  在2.0中的使用
    items: [EHSubmit.MessageBox.WriteMsg.Contact.grid]
};

